package com.company.基础.Array.twoDimensional.exer;

/**
 * 算法：
 * 数组的复制 数组反转  二分查找
 * 排序：
 *  十大内部排序算法：
 *      选择排序：直接选择排序  堆排序
 *      交换排序：冒泡排序  快速排序
 *      插入排序： 直接插入排序 折半插入排序 shell排序
 *      归并排序：
 *      桶式排序：
 *      基数排序：
 *  算法的五大特征：输入 输出 有穷性 确定性 可行性
 */
public class Array5 {
    public static void main(String[] args) {
        //数组复制
        int[] arr =new int[]{1,2,3,4,6,7,8,9};
        int[] arr2 =new int[arr.length];
        for (int i = 0; i <arr2.length ; i++) {
            arr2[i]=arr[i];
        }
        //数组反转

        for (int i = 0; i <arr2.length/2 ; i++) {
                int trans=arr2[i];
                arr2[i]=arr2[arr2.length-1-i];
                arr2[arr2.length-1-i]=trans;

        }
        //二分查找
        char fin='g';
        int k=0;
        boolean flag=false;
        char[] chars=new  char[]{'a','b','d','e','f','g'};
        int head=0;
        int end=chars.length-1;
        while (head<=end){
            int middle=(head+end)/2;
            if (fin==chars[middle]){
                System.out.println("找到了在第"+middle+"位");
                flag=true;
                break;
            }else if (fin>chars[middle]){
                head=middle+1;
            }else if (fin<chars[middle]){
                end=middle-1;
            }

        }
        if (flag==true){
            System.out.println("查到了");
        }else {
            System.out.println("没有查到");
        }
        //遍历
        for (int i = 0; i <arr2.length ; i++) {
            System.out.println(arr2[i]);
        }
        //
    }
}
